package com.dys.testfinal;

/**
 * @className: com.dys.testfinal.Test
 * @description: com.dys.testfinal
 * @author: pine cone
 * @version: v1.0.0
 * @createTime: 2024/07/21 下午8:40
 */
public class Test {
    /**
     * 这是一个main()方法,是应用程序的入口
     *
     * @param args 方法的形参列表,是一个字符串数组,包含了从命令行传递给程序的参数
     */
    public static void main(String[] args) {
        // 第1种情况
        // final修饰一个变量,变量的值不可以改变，这个变量也变成了一个字符常量，约定俗成的规定：名字大写
        final int A = 10;
        // A = 20;

        // 第2种情况: final修饰引用数据类型,那么地址值就不可以改变
        final Dog dog = new Dog();
        // dog = new Dog();
        // 对象的属性值依然可以改变
        dog.age = 5;
        dog.weight = 20.5;

        // 第3种情况
        final Dog d2 = new Dog();
        a(d2);

        // 第4种情况
        b(d2);
    }

    public static void a(Dog d) {
        d = new Dog();
    }

    /**
     * d被final修饰，地址指向不可变
     *
     * @param d
     */
    public static void b(final Dog d) {
        // d = new Dog();
    }
}
